/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stud.cp.core.dbaccess;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;

/**
 *
 * @author Morfant
 */
public class JDBC_Connection {

    /**
     * Логгер.
     */
    private static Logger logger = Logger.getLogger("CPTNP");
    /**
     * DataSource Oracle.
     */
    private static DataSource dataSource = null;

    /**
     * Приватный конструктор.
     * Паттерн Singleton.
     */
    private JDBC_Connection() {
    }

    /**
     * Метод, который получает DataSource у сервера приложений
     * через jndi имя.
     * @throws NamingException Ошибка получения чего либо по имени.
     */
    private static void setDataSource() throws NamingException {
        Context context = new InitialContext();
        dataSource = (DataSource) context.lookup("jdbc/oraclestudent");
    }

    /**
     * Метод, позволяющий получить Connecion к базе данных.
     * @return Connection.
     */
    public static Connection getConnection() throws SQLException {
        try {
            if (dataSource == null) {
                setDataSource();
            }
        } catch (NamingException ex) {
            throw new SQLException("Exception during lookup DataSource.", ex);
        }
        return dataSource.getConnection();
    }
}
